package com.solidumgame.martillo.hammer
{	
	import com.pblabs.engine.PBE;
	import com.pblabs.engine.entity.IEntity;
	
	import flash.geom.Point;
	
	/**
	 * 
	 * @author martin
	 * 
	 */	
	
	public class Hammer
	{
		protected var spatialComp:HammerSpatialComponent;
		protected var render:HammerRendererComponent;
		protected var logic:HammerLogicComponent;
		protected var soundKnock:HammerSoundComponent;
		protected var speed:HammerSpeedComponent;
		
		protected var myEntity:IEntity;
		
		
		public static const TYPE:String = "Hammer"; 
		
		/**
		 *	Constructor de la clase Hammer. 
		 *  Se inicializan y agregan a la entidad los componentes spatial, renderer, logic y soundKnock. 
		 * 	Al agregar dichos componentes se les asigna un nombre a cada uno.
		 * 	Se inicializa la entidad y también se le asigna un nombre.
		 */		
		
		public function Hammer()
		{
			spatialComp  = new HammerSpatialComponent();
			render = new HammerRendererComponent();
			logic = new HammerLogicComponent();
			soundKnock = new HammerSoundComponent();
			speed = new HammerSpeedComponent();
			
			myEntity = PBE.allocateEntity();
			myEntity.addComponent(spatialComp, "Spatial");
			myEntity.addComponent(render, "Renderer");
			myEntity.addComponent(logic, "Logic");
			myEntity.addComponent(soundKnock,"SoundKnock");
			myEntity.addComponent(speed,"Speed");
			myEntity.initialize("Hammer");
		}
		
		/**
		 * Método para remover la entidad Hammer. 
		 * Se destruye la entidad y se le asigna el valor null a todos sus componentes.
		 * 
		 */
		
		public function remove():void{
			myEntity.destroy();
			
			myEntity = null;
			spatialComp = null;
			soundKnock = null;
			logic = null;
			render = null;
			speed = null;
		}

	}
}